package com.yulongtian.algorithms.binarysearch01;

import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Set;

/**
 * https://leetcode.cn/problems/check-if-n-and-its-double-exist/
 *
 * @author yulongTian
 * @create 2023-02-08 16:33
 */
public class Test10 {
    public static void main(String[] args) {
        int[] arr = {10, 2, 5, 3};
        System.out.println(checkIfExist(arr));
    }
    //直接遍历所有的数字对，
    // 判断一个数字是否是另一个数字的两倍。
    // 注意要用乘法判断，除法判断会有除零的问题。
    //O(n*n)

    //排序+双指针也可以
    //O(nlgn)

    /**
     * 先对所有数字进行排序。然后维护两个指针：指针p遍历数字x，指针q寻找2x。
     *
     * @param arr
     * @return
     */
    public static boolean checkIfExist(int[] arr) {
        //排序
        //2 3 5 10
        Arrays.sort(arr);


        return false;
    }

    //哈希表
    //O(n)

//    //可  11.66%+12.89%
//    public static boolean checkIfExist(int[] arr) {
//        HashMap<Integer, Integer> map = new HashMap<>();
//        Set<Integer> nums = new HashSet<>();
//        int count_0 = 0;
//        for (int num : arr) {
//            if (num == 0) {
//                count_0++;
//                if (count_0 >= 2) {
//                    return true;
//                }
//            }
//            nums.add(num);
//        }
//        for (Integer num : nums) {
//            //添加自身
//            add(map, num);
//            if (num != 0) {
//                //添加自身/2
//                if (num % 2 == 0) {
//                    add(map, num / 2);
//                }
//                //添加自身*2
//                add(map, num * 2);
//                if (map.get(num) >= 2 && map.get(num * 2) >= 2 || map.get(num) >= 2 && num % 2 == 0 && map.get(num / 2) >= 2) {
//                    return true;
//                }
//            }
//        }
//        return false;
//    }
//
//    public static void add(HashMap<Integer, Integer> map, int num) {
//        if (!map.containsKey(num)) {
//            map.put(num, 1);
//        } else {
//            map.put(num, map.get(num) + 1);
//        }
//    }

}
